#include "Administrador.h"

using namespace Entidades;

Administrador::Administrador() {

}

string Administrador::getContrasenia() const
{
    return contrasenia;
}

string Administrador::getUsuario() const
{
    return usuario;
}

void Administrador::setContrasenia(string contrasenia)
{
    this->contrasenia = contrasenia;
}

void Administrador::setUsuario(string usuario)
{
    this->usuario = usuario;
}

bool Administrador::validarContrasenia(string contrasenia){

	return (this->contrasenia == contrasenia);

}

void Administrador::hidratarse(char* buffer, unsigned int tamanioDelBuffer) {

	//escribo el buffer en el stringStream
	stringstream* ss = new stringstream(stringstream::in | stringstream::out | stringstream::binary);
	ss->seekg(0, ios::beg);
	ss->write(buffer, tamanioDelBuffer);

	//Usuario
	this->setUsuario(Utils::ObtenerSiguienteStringVariable(ss));

	//Contraseña
	this->setContrasenia(Utils::ObtenerSiguienteStringVariable(ss));

	delete ss;
}

char* Administrador::construirBuffer() {

	//agrupo los atributos
	stringstream* ss = new stringstream(stringstream::in | stringstream::out | stringstream::binary);
	ss->seekp(0, ios::end);

	//usuario string
	unsigned int tamanioDelUsuario = this->getUsuario().size();
	ss->write((char*) &tamanioDelUsuario, sizeof(int));
	ss->write(this->getUsuario().c_str(), tamanioDelUsuario);

	//contraseña string
	unsigned int tamanioDelaContrasenia = this->getContrasenia().size();
	ss->write((char*) &tamanioDelaContrasenia, sizeof(int));
	ss->write(this->getContrasenia().c_str(), tamanioDelaContrasenia);

	//construyo el buffer
	unsigned int tamanioDelBuffer = this->getTamanioDelBuffer();
	char* buffer = new char[tamanioDelBuffer];
	ss->read(buffer, tamanioDelBuffer);
	delete ss;

	//lo devuelvo
	return buffer;
}

unsigned int Administrador::getTamanioDelBuffer() {
	return (2 * sizeof(int)) + this->getUsuario().size() + this->getContrasenia().size();
}

void Administrador::marcarComoBorrado() {

}

Administrador::~Administrador() {
}

